/**
 * 
 */
package ar.pegasus.clasificador.gui;

import javax.ejb.EJBTransactionRolledbackException;

import ar.pegasus.framework.componentes.error.PRuntimeException;
import ar.pegasus.framework.excepciones.InterpreteExcepciones;


/**
 * @author oarias
 *
 */
public class InterpreteExcepcionesClasificador implements InterpreteExcepciones {

	/* (non-Javadoc)
	 * @see ar.pegasus.framework.excepciones.InterpreteExcepciones#interpretarMensajeExcepcion(java.lang.RuntimeException)
	 */
	public String interpretarMensajeExcepcion(RuntimeException ex) {
		if (ex.getCause() != null && ex.getCause() instanceof javax.persistence.OptimisticLockException){
			return "El objeto que intenta guardar ha sido modificado por otro usuario mientras usted lo editaba";
		}else if (ex.getCause() != null && ex.getCause() instanceof javax.persistence.EntityExistsException){
			String msg = ex.getCause().getMessage();
			if (msg.contains("OrdenPublicidadMaterial")){
				return "La orden ya existe. Es posible que alguien haya modificado la orden mientras usted estaba edit�ndola.";
			}
			return msg;
		}
		else if (ex.getCause() != null && ex instanceof EJBTransactionRolledbackException){
			String imprevista = "Error imprevisto en la aplicacion. Mensaje: ";
			if (ex.getCause() instanceof PRuntimeException){
				imprevista = "";
			}
			return imprevista + ex.getLocalizedMessage() + " (La transaccion ha sido anulada)";
		}
		
		return "Error imprevisto en la aplicacion. Mensaje: " + ex.getLocalizedMessage();
	}
}
